package com.twb.auth.mapper;

import com.twb.auth.entity.twbResource.TwbResource;
import com.twb.auth.entity.twbResource.TwbResourceApi;
import com.twb.auth.entity.twbResource.dto.*;
import com.twb.auth.entity.twbResource.vo.SearchAuthResourceTreeVo;
import com.twb.auth.entity.twbResource.vo.SearchRoleAccreditResourceTreeVo;
import com.twb.auth.entity.twbResource.vo.SearchTwbResourceTreeVo;
import com.twb.auth.entity.twbResource.vo.SearchTwbResourceVo;
import com.twb.core.base.mapper.TwbBaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @ClassName TwbResourceMapper
 * @Description 资源管理mapper
 * @author DSY
 * @date 2018年11月3日 下午5:27:19
 */
@Mapper
public interface TwbResourceMapper extends TwbBaseMapper<TwbResource> {

	/**
	 * @Title  listResourceAll
	 * @Description 获取全部资源
	 * @return
	 * @author DSY
	 * @date 2018年11月6日 下午3:37:09
	 */
	public List<TwbResource> listResourceAll(@Param("appId") String appId);

	/**
	 * @Title  listResourceByUserId
	 * @Description 根据用户ID获取该用户的所有资源
	 * @param userId
	 * @return
	 * @author DSY
	 * @date 2018年11月6日 下午3:37:23
	 */
	public List<TwbResource> listResourceByUserId(@Param("userId") String userId, @Param("appId") String appId);

	/**
	 * @Title  searchTwbResource
	 * @Description 查询资源信息列表
	 * @param vo
	 * @return
	 * @author DSY
	 * @date 2018年11月9日 下午12:09:18
	 */
	public List<SearchTwbResourceDto> searchTwbResource(SearchTwbResourceVo vo);

	/**
	 * @Title  searchTwbResourceTree
	 * @Description 查询资源树
	 * @param vo
	 * @return
	 * @author DSY
	 * @date 2018年11月9日 下午2:47:24
	 */
	public List<SearchTwbResourceTreeDto> searchTwbResourceTree(SearchTwbResourceTreeVo vo);

	/**
	 * @Title  getTwbResourceById
	 * @Description 根据ID获取资源信息
	 * @param id
	 * @return
	 * @author DSY
	 * @date 2018年11月9日 下午4:15:16
	 */
	public GetTwbResourceByIdDto getTwbResourceById(String id);

	/**
	 * @Title  getMaxSeqByParentResId
	 * @Description 根据父ID获取最大顺序号
	 * @param parentResId
	 * @return
	 * @author DSY
	 * @date 2018年11月9日 下午5:32:39
	 */
	public Integer getMaxSeqByParentResId(String parentResId);

	/**
	 * @Title  listOrgResourceTreeByOrgId
	 * @Description 获取机构经办权限
	 * @param id
	 * @return
	 * @author DSY
	 * @date 2018年11月21日 下午5:49:57
	 */
	public List<SearchAuthResourceTreeDto> listOrgResourceTreeByOrgId(String id);

	/**
	 * @Title listRoleResourceTreeByRoleId
	 * @Description	查询可授权经办权限
	 * @return
	 * @author DSY
	 * @date 2020年7月14日 上午9:11:42
	 */
	public List<SearchAuthResourceTreeDto> listRoleResourceTreeByRoleId(SearchAuthResourceTreeVo vo);

	/**
	 * @Title  listRoleAccreditResourceTreeByRoleId
	 * @Description 角色授权权限树
	 * @param id
	 * @return
	 * @author DSY
	 * @date 2018年11月21日 下午6:16:19
	 */
	public List<SearchRoleAccreditResourceTreeDto> listRoleAccreditResourceTreeByRoleId(SearchRoleAccreditResourceTreeVo vo);

	/**
	 * @Title  deleteTwbResourceById
	 * @Description 删除资源以及子级资源
	 * @param ids
	 * @return
	 * @author DSY
	 * @date 2018年11月26日 下午5:36:51
	 */
	public int deleteTwbResourceById(List<String> ids);

	/**
	 * @Title  deleteRoleResourceByResId
	 * @Description 删除角色经办资源
	 * @param ids
	 * @author DSY
	 * @date 2018年11月26日 下午5:53:48
	 */
	public void deleteRoleResourceByResId(List<String> ids);

	/**
	 * @Title  deleteRoleAccreditResourceByResId
	 * @Description 删除角色授权资源
	 * @param ids
	 * @author DSY
	 * @date 2018年11月26日 下午5:54:05
	 */
	public void deleteRoleAccreditResourceByResId(List<String> ids);

	/**
	 * @Title  deleteOrgResourceByResId
	 * @Description 删除部门资源
	 * @param ids
	 * @author DSY
	 * @date 2018年11月26日 下午5:54:23
	 */
	public void deleteOrgResourceByResId(List<String> ids);

	/**
	 * @Title deleteApiResourceByResId
	 * @Description 删除资源API配置
	 * @param ids
	 * @AuthorOriginally DHL
	 * @date 2022年3月23日 下午9:12:52
	 */
	public void deleteApiResourceByResId(List<String> ids);

	/**
	 * @Title deleteResourceApiByResourceId
	 * @Description 删除资源api绑定关系
	 * @param resourceId
	 * @author DSY
	 * @date 2021年5月26日 下午1:53:53
	 */
	public int deleteResourceApiByResourceId(String resourceId);

	/**
	 * @Title insertResourceApiBatchForOracle
	 * @Description 批量保存api
	 * @param list
	 * @return
	 * @author DSY
	 * @date 2021年5月26日 下午2:04:16
	 */
	public int insertResourceApiBatchForOracle(List<TwbResourceApi> list);

	/**
	 * @Title insertResourceApiBatchForMysql
	 * @Description 批量保存api
	 * @param list
	 * @return
	 * @author DSY
	 * @date 2021年5月26日 下午2:04:26
	 */
	public int insertResourceApiBatchForMysql(List<TwbResourceApi> list);
	
	/**
	 * @Title updateOrgResId
	 * @Description 更新机构资源表资源id
	 * @param newResId
	 * @param oldResId
	 * @return
	 * @author DHL
	 * @date 2022年3月20日 上午5:29:18
	 */
	public int updateOrgResId(@Param("newResId") String newResId, @Param("oldResId") String oldResId);

	/**
	 * @Title updateRoleResId
	 * @Description 更新角色资源表资源id
	 * @param newResId
	 * @param oldResId
	 * @return
	 * @author DHL
	 * @date 2022年3月20日 上午5:29:23
	 */
	public int updateRoleResId(@Param("newResId") String newResId, @Param("oldResId") String oldResId);
	
	/**
	 * @Title updateRoleAccreditResId
	 * @Description 更新可授权资源表资源id
	 * @param newResId
	 * @param oldResId
	 * @return
	 * @author DHL
	 * @date 2022年3月20日 上午5:29:27
	 */
	public int updateRoleAccreditResId(@Param("newResId") String newResId, @Param("oldResId") String oldResId);

	/**
	 * @Title updateApiResId
	 * @Description 更新资源api配置表
	 * @param newResId
	 * @param oldResId
	 * @return
	 * @AuthorOriginally DHL
	 * @date 2022年3月23日 下午9:21:14
	 */
	public int updateApiResId(@Param("newResId") String newResId, @Param("oldResId") String oldResId);

	/**
	 * @Title updateIdByOldId
	 * @Description 更新资源主键
	 * @param newResId
	 * @param oldResId
	 * @return int
	 * @author DHL
	 * @date 9:48 2022/3/24
	 */
	public int updateIdByOldId(@Param("newResId") String newResId, @Param("oldResId") String oldResId);

	/**
	 * @Title updateResourceStatusById
	 * @Description 更新资源状态
	 * @param ids
	 * @param status
	 * @return
	 * @AuthorOriginally DSY
	 * @date 2022年8月2日 下午5:06:04
	 */
	public int updateResourceStatusById(@Param("ids") List<String> ids,@Param("status")String status);
}
